package com.jijuxie.agent.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.jijuxie.common.core.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 经纪人信息实体类
 * 
 * @author jijuxie
 */
@Data
@TableName("agent_info")
@EqualsAndHashCode(callSuper = true)
public class Agent extends BaseEntity {

    /**
     * 经纪人ID
     */
    @TableId(type = IdType.AUTO)
    private Long agentId;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 真实姓名
     */
    private String realName;

    /**
     * 身份证号
     */
    private String idCard;

    /**
     * 工号
     */
    private String agentNo;

    /**
     * 所属公司
     */
    private String company;

    /**
     * 职位
     */
    private String position;

    /**
     * 从业年限
     */
    private Integer workYears;

    /**
     * 头像地址
     */
    private String avatar;

    /**
     * 认证状态（0待审核 1已认证 2未通过）
     */
    private String status;

    /**
     * 删除标志（0存在 1删除）
     */
    @TableLogic
    private String delFlag;

    // 由于BaseEntity中的字段名与数据库字段不完全匹配，需要正确映射或排除
    
    /**
     * 从BaseEntity继承的字段，在数据库中不存在，需要排除
     */
    @TableField(exist = false)
    private String createBy;

    /**
     * 从BaseEntity继承的字段，在数据库中不存在，需要排除
     */
    @TableField(exist = false)
    private String updateBy;

    // createTime和updateTime在agent_info表中存在，不需要标记为不存在
    // 但需要确保映射正确的列名
    @TableField("create_time")
    private LocalDateTime createTime;

    @TableField("update_time")
    private LocalDateTime updateTime;

    // --------------以下是数据库中存在的字段--------------

    /**
     * 职称（初级经纪人、中级经纪人、高级经纪人）
     */
    private String title;

    /**
     * 评分
     */
    private BigDecimal rating;

    /**
     * 成交数量
     */
    private Integer deals;

    /**
     * 服务区域
     */
    private String serviceArea;

    /**
     * 个人简介
     */
    private String introduction;

    /**
     * 专业领域（住宅、商铺、写字楼等）
     */
    private String expertise;

    /**
     * 证书编号
     */
    private String licenseNo;

    /**
     * 证书图片
     */
    private String licenseImage;

    /**
     * 审核人ID
     */
    private Long auditorId;

    /**
     * 审核时间
     */
    private LocalDateTime auditTime;

    /**
     * 审核备注
     */
    private String auditRemark;
}
